package com.ddwl.schema.bo.wallet;

import com.ddwl.schema.bo.base.BaseBo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.Instant;
import java.util.Set;

/**
 * 优惠券
 *
 * @author Fu Zhaohui
 * @version 1.0.0
 * @date 2019/8/8 11:00
 */
@Setter
@Getter
public class CouponBo extends BaseBo {

    @NotEmpty(message = "ID不能为空", groups = Update.class)
    private String id;

    /**
     * 店铺id
     */
    @ApiModelProperty(value = "店铺id")
    private Set<String> shopIds;

    /**
     * 券名称
     */
    @NotEmpty(message = "券的名称不能为空", groups = Create.class)
    @ApiModelProperty(value = "券名称")
    private String name;

    /**
     * 券封面
     */
    @ApiModelProperty(value = "券封面")
    private String coverImg;

    /**
     * 销售价格
     */
    @ApiModelProperty(value = "销售价格")
    private BigDecimal price;

    /**
     * 券金额（可抵扣金额）
     */
    @ApiModelProperty(value = "券金额（可抵扣金额）")
    private BigDecimal amount;

    /**
     * 使用最低金额
     */
    @ApiModelProperty(value = "使用最低金额")
    private BigDecimal minAmount;

    /**
     * 开始时间
     */
    @NotNull(message = "开始时间不能为空")
    @ApiModelProperty(value = "开始时间")
    private Instant beginDate;

    /**
     * 结束时间
     */
    @NotNull(message = "结束时间不能为空")
    @ApiModelProperty(value = "结束时间")
    private Instant endDate;

    /**
     * 单个人最大领取数量
     */
    @ApiModelProperty(value = "单个人最大领取数量")
    private Integer singleMax;

    /**
     * 发放总数量
     */
    @ApiModelProperty(value = "发放总数量")
    private Integer quantity;

    /**
     * 有效天数
     */
    @ApiModelProperty(value = "有效天数")
    private Integer validDays;

    /**
     * 券说明
     */
    @ApiModelProperty(value = "券说明")
    private String introduce;

    /**
     * 批次唯一标识服务
     */
    @ApiModelProperty(value = "批次唯一标识服务")
    private String batchNo;

    /**
     * 类型 0一次抵扣消费,1可以多次抵扣消费,2商品兑换券
     */
    @NotNull(message = "优惠券类型不能为空")
    @ApiModelProperty(value = "类型 0、满减券,1、代金券,2、商品兑换券")
    private Integer type;

    @ApiModelProperty(value = "适用哪一类商品")
    private String categoryId;

    /**
     * 兑换商品id
     */
    @ApiModelProperty(value = "兑换商品id")
    private String itemId;

    /**
     * 是否启用：0否1是
     */
    @ApiModelProperty(value = "是否启用：0否1是")
    private Integer enable;

    @ApiModelProperty("可使用周天数")
    private Integer[] weeks;

}
